﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using BALayer;

namespace QuanLyDoan
{
    public partial class FrmQuanLyThongTinHoatDong : Form
    {
        DBTTHoatDong dbThongTinHD;
        DBCTHoatDong dbChuongTrinhHD;
        DBDoanVien dbDoanVien;
        DBDonViToChuc dbDonViToChuc;

        DataTable dtThongTinHD;
        DataTable dtCanBo;
        DataTable dtChuongTrinhHD;
        DataTable dtDonViToChuc;


        bool Them;

        public FrmQuanLyThongTinHoatDong()
        {
            InitializeComponent();
            dbThongTinHD = new DBTTHoatDong();
            dbChuongTrinhHD = new DBCTHoatDong();
            dbDoanVien = new DBDoanVien();
            dbDonViToChuc = new DBDonViToChuc();
        }

        void LoadData()
        {
            try
            {
                //Vận chuyển dữ liệu vào DataTable dt

                dtCanBo = new DataTable();
                dtCanBo.Clear();
                dtCanBo = dbDoanVien.LayCanBo().Tables[0];

                dtChuongTrinhHD = new DataTable();
                dtChuongTrinhHD.Clear();
                dtChuongTrinhHD = dbChuongTrinhHD.LayCTHoatDong().Tables[0];

                dtDonViToChuc = new DataTable();
                dtDonViToChuc.Clear();
                dtDonViToChuc = dbDonViToChuc.LayDonViToChuc().Tables[0];

                //Đưa dữ liệu lên ComboBox trong DataGridView
                MaHD.DataSource = dtChuongTrinhHD;
                MaHD.DisplayMember = "TenHD";
                MaHD.ValueMember = "MaHD";

                MaDVTC.DataSource = dtDonViToChuc;
                MaDVTC.DisplayMember = "TenDonVi";
                MaDVTC.ValueMember = "MaDVTC";

                MaQL.DataSource = dtCanBo;
                MaQL.DisplayMember = "Ten";
                MaQL.ValueMember = "MaDV";

                //Đưa dữ liệu lên Combobox trong GroupBox
                cbMaHD.DataSource = dtChuongTrinhHD;
                cbMaHD.DisplayMember = "TenHD";
                cbMaHD.ValueMember = "MaHD";

                cbMaDVTC.DataSource = dtDonViToChuc;
                cbMaDVTC.DisplayMember = "TenDonVi";
                cbMaDVTC.ValueMember = "MaDVTC";

                cbMaQL.DataSource = dtCanBo;
                cbMaQL.DisplayMember = "Ten";
                cbMaQL.ValueMember = "MaDV";

                //Vận chuyển dữ liệu lên datatable
                dtThongTinHD = new DataTable();
                dtThongTinHD.Clear();
                dtThongTinHD = dbThongTinHD.LayTTHoatDong().Tables[0];

                //Đưa dữ liệu lên DataGridView
                dgvThongTinHD.DataSource = dtThongTinHD;//

                cbMaHD.ResetText();
                dtpBatDau.Refresh();
                dtpKetThuc.Refresh();
                txtDiaDiem.ResetText();
                txtSoLuong.ResetText();
                txtKinhPhiHoTro.ResetText();
                txtKinhPhiKhac.ResetText();
                cbMaDVTC.ResetText();
                cbMaQL.ResetText();

                //Không cho thao tác trên nút Lưu/Hủy
                this.btnHuy.Enabled = false;
                this.btnLuu.Enabled = false;
                this.grTTHoatDong.Enabled = false;
                //Cho thao tác trên các nút Thêm / Sửa / Xóa / Thoát 
                this.btnThem.Enabled = true;
                this.btnSua.Enabled = true;
                this.btnXoa.Enabled = true;
                this.btnThoat.Enabled = true;
            }
            catch (SqlException)
            {
                MessageBox.Show("Không lấy được nội dung trong table TTHĐ. Lỗi rồi!!!");
            }
        }
        private void FrmQuanLyThongTinHoatDong_Load(object sender, EventArgs e)
        {
            LoadData();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnReLoad_Click(object sender, EventArgs e)
        {
            LoadData();
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            cbMaHD.ResetText();
            dtpBatDau.Refresh();
            dtpKetThuc.Refresh();
            txtDiaDiem.ResetText();
            txtSoLuong.ResetText();
            txtKinhPhiHoTro.ResetText();
            txtKinhPhiKhac.ResetText();
            cbMaDVTC.ResetText();
            cbMaQL.ResetText();

            //Không cho thao tác trên nút Lưu/Hủy
            this.btnHuy.Enabled = false;
            this.btnLuu.Enabled = false;
            this.grTTHoatDong.Enabled = false;
            //Cho thao tác trên các nút Thêm / Sửa / Xóa / Thoát 
            this.btnThem.Enabled = true;
            this.btnSua.Enabled = true;
            this.btnXoa.Enabled = true;
            this.btnThoat.Enabled = true;
            dgvThongTinHD_CellClick(null, null);
        }

        private void dgvThongTinHD_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            // Thứ tự dòng hiện hành 
            int r = dgvThongTinHD.CurrentCell.RowIndex;
            // Chuyển thông tin lên groupbox 
            cbMaHD.SelectedValue =
                dgvThongTinHD.Rows[r].Cells[0].Value.ToString(); 
            dtpBatDau.Text =
                dgvThongTinHD.Rows[r].Cells[1].Value.ToString();
            dtpKetThuc.Text =
                dgvThongTinHD.Rows[r].Cells[2].Value.ToString();
            txtDiaDiem.Text =
                dgvThongTinHD.Rows[r].Cells[3].Value.ToString();
            txtSoLuong.Text =
                dgvThongTinHD.Rows[r].Cells[4].Value.ToString();
            txtKinhPhiHoTro.Text =
                dgvThongTinHD.Rows[r].Cells[5].Value.ToString();
            txtKinhPhiKhac.Text =
                dgvThongTinHD.Rows[r].Cells[6].Value.ToString();
            cbMaQL.SelectedValue =
                dgvThongTinHD.Rows[r].Cells[7].Value.ToString();
            cbMaDVTC.SelectedValue =
                dgvThongTinHD.Rows[r].Cells[8].Value.ToString();

        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            // Kich hoạt biến Them 
            Them = true;
            //Xóa trống các đối tượng trong Groupbox
            cbMaHD.ResetText();
            dtpBatDau.Refresh();
            dtpKetThuc.Refresh();
            txtDiaDiem.ResetText();
            txtSoLuong.ResetText();
            txtKinhPhiHoTro.ResetText();
            txtKinhPhiKhac.ResetText();
            cbMaDVTC.ResetText();
            cbMaQL.ResetText();
            //Cho thao tác trên nút Lưu/Hủy/Groupbox
            this.btnHuy.Enabled = true;
            this.btnLuu.Enabled = true;
            this.grTTHoatDong.Enabled = true;
            //Không cho thao tác trên các nút Thêm / Sửa / Xóa / Thoát 
            this.btnThem.Enabled = false;
            this.btnSua.Enabled = false;
            this.btnXoa.Enabled = false;
            this.btnThoat.Enabled = false;

            //Đưa dữ liệu lên Combobox trong GroupBox
            cbMaHD.DataSource = dtChuongTrinhHD;
            cbMaHD.DisplayMember = "TenHD";
            cbMaHD.ValueMember = "MaHD";

            cbMaDVTC.DataSource = dtDonViToChuc;
            cbMaDVTC.DisplayMember = "TenDonVi";
            cbMaDVTC.ValueMember = "MaDVTC";

            cbMaQL.DataSource = dtCanBo;
            cbMaQL.DisplayMember = "Ten";
            cbMaQL.ValueMember = "MaDV";

            //Đưa con trỏ đến txtMaDonVi
            this.cbMaHD.Enabled = true;
            this.dtpBatDau.Enabled = true;
            this.cbMaHD.Focus();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            // Kích hoạt biến Sửa 
            Them = false;

            //
            this.cbMaHD.Enabled = false;
            this.dtpBatDau.Enabled = false;
            // Thứ tự dòng hiện hành 
            int r = dgvThongTinHD.CurrentCell.RowIndex;

            // Chuyển thông tin lên groupbox 
            cbMaHD.SelectedValue =
                dgvThongTinHD.Rows[r].Cells[0].Value.ToString();
            dtpBatDau.Text =
                dgvThongTinHD.Rows[r].Cells[1].Value.ToString();
            dtpKetThuc.Text =
                dgvThongTinHD.Rows[r].Cells[2].Value.ToString();
            txtDiaDiem.Text =
                dgvThongTinHD.Rows[r].Cells[3].Value.ToString();
            txtSoLuong.Text =
                dgvThongTinHD.Rows[r].Cells[4].Value.ToString();
            txtKinhPhiHoTro.Text =
                dgvThongTinHD.Rows[r].Cells[5].Value.ToString();
            txtKinhPhiKhac.Text =
                dgvThongTinHD.Rows[r].Cells[6].Value.ToString();
            cbMaQL.SelectedValue =
                dgvThongTinHD.Rows[r].Cells[7].Value.ToString();
            cbMaDVTC.SelectedValue =
                dgvThongTinHD.Rows[r].Cells[8].Value.ToString();

            // Cho thao tác trên các nút Lưu / Hủy / GroupBox 
            this.btnLuu.Enabled = true;
            this.btnHuy.Enabled = true;
            this.grTTHoatDong.Enabled = true;
            // Không cho thao tác trên các nút Thêm / Xóa / Thoát 
            this.btnThem.Enabled = false;
            this.btnSua.Enabled = false;
            this.btnXoa.Enabled = false;
            this.btnThoat.Enabled = false;

        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            try
            {
                // Lấy thứ tự record hiện hành 
                int r = dgvThongTinHD.CurrentCell.RowIndex;
                // Lấy Phong của record hiện hành 
                string strMaHD =
                    dgvThongTinHD.Rows[r].Cells[0].Value.ToString();
                DateTime thoigian =
                    DateTime.Parse(dgvThongTinHD.Rows[r].Cells[1].Value.ToString());
                // Viết câu lệnh SQL 
                // Hiện thông báo xác nhận việc xóa mẫu tin 
                // Khai báo biến traloi 
                DialogResult traloi;
                // Hiện hộp thoại hỏi đáp 
                traloi = MessageBox.Show("Chắc xóa mẫu tin này không?", "Trả lời",
                MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                // Kiểm tra có nhắp chọn nút Ok không? 
                string err = "";
                if (traloi == DialogResult.Yes)
                {

                    // Thực hiện câu lệnh SQL 
                    bool f = dbThongTinHD.XoaTTHoatDong(ref err, strMaHD, thoigian);
                    if (f)
                    {
                        // Cập nhật lại DataGridView 
                        LoadData();
                        // Thông báo 
                        MessageBox.Show("Đã xóa xong!");
                    }
                    else
                    {
                        MessageBox.Show("Không xóa được!\n\r" + "Lỗi:" + err);
                    }
                }
                else
                {
                    // Thông báo 
                    MessageBox.Show("Không thực hiện việc xóa mẫu tin!");
                }
            }
            catch (SqlException)
            {
                MessageBox.Show("Không xóa được. Lỗi rồi!!!");
            }
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (cbMaHD.SelectedValue == null || dtpBatDau.Text.ToString().Trim() == "" || dtpKetThuc.Text.ToString().Trim() == "" || txtDiaDiem.Text.ToString().Trim() == "" || txtSoLuong.Text.ToString().Trim() == "" || int.Parse(txtSoLuong.Text.ToString().Trim())<=0 || cbMaDVTC.SelectedValue == null || cbMaQL.SelectedValue == null)
            {
                MessageBox.Show("Bạn phải điền đầy đủ các thông tin cần thiết!!!");
            }

            else
            {
                try
                {
                    int soluong = int.Parse(txtSoLuong.Text);
                    double kinhphi = double.Parse(txtKinhPhiHoTro.Text);
                    double kinhphikhac = double.Parse(txtKinhPhiKhac.Text);
                    DateTime thoigian = DateTime.Parse(dtpBatDau.Text);
                    DateTime ketthuc = DateTime.Parse(dtpKetThuc.Text);
                    string diadiem = txtDiaDiem.Text.ToString().Trim();
                    string maQL = cbMaQL.SelectedValue.ToString();
                    string maDVTC = cbMaDVTC.SelectedValue.ToString();
                    string maHD = cbMaHD.SelectedValue.ToString();

                    string err = "";
                    if (Them)
                    {
                        try
                        {
                            bool dg = false;
                            //Lệnh Insert Into
                            bool f = dbThongTinHD.ThemTTHoatDong(ref err, maHD, thoigian, ketthuc, diadiem, soluong, kinhphi, kinhphikhac, maQL, maDVTC, dg);
                            if (f)
                            {
                                // Load lại dữ liệu trên DataGridView 
                                LoadData();
                                // Thông báo 
                                MessageBox.Show("Đã thêm xong!");
                            }
                            else
                            {
                                MessageBox.Show("Chưa thêm xong!\n\r" + "Lỗi:" + err);
                            }
                        }
                        catch (SqlException)
                        {
                            MessageBox.Show("Không thêm được. Lỗi rồi!");
                        }

                    }
                    else //Sửa dữ liệu
                    {
                        try
                        {
                            bool f = dbThongTinHD.SuaTTHoatDong(ref err, maHD, thoigian, ketthuc, diadiem, soluong, kinhphi, kinhphikhac, maQL, maDVTC);
                            if (f)
                            {
                                // Load lại dữ liệu trên DataGridView 
                                LoadData();
                                // Thông báo 
                                MessageBox.Show("Đã cập nhật xong!");
                            }
                            else
                            {
                                MessageBox.Show("Chưa cập nhật xong!\n\r" + "Lỗi:" + err);
                            }
                        }
                        catch (SqlException)
                        {
                            MessageBox.Show("Không cập nhật được. Lỗi rồi!");
                        }
                    }
                }

                catch (FormatException)
                {
                    MessageBox.Show("Bạn phải nhập đúng kiểu dữ liệu!!", "Lỗi",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void txtThang_TextChanged(object sender, EventArgs e)
        {
            string text = txtTenHD.Text.ToString();
            string thang = txtThang.Text.ToString();
            string nam = txtNam.Text.ToString();
            DataTable dt = new DataTable();
            dt.Clear();
            dt = dbThongTinHD.TimKiemTTHoatDong(text,thang, nam).Tables[0];

            dgvThongTinHD.DataSource = dt;

            if (dgvThongTinHD.RowCount == 0)
            {
                MessageBox.Show("Không tồn tại dữ liệu nào trong CSDL!!!");
                txtThang.ResetText();
            }
        }

        private void txtNam_TextChanged(object sender, EventArgs e)
        {
            string text = txtTenHD.Text.ToString();
            string thang = txtThang.Text.ToString();
            string nam = txtNam.Text.ToString();
            DataTable dt = new DataTable();
            dt.Clear();
            dt = dbThongTinHD.TimKiemTTHoatDong(text,thang, nam).Tables[0];

            dgvThongTinHD.DataSource = dt;

            if (dgvThongTinHD.RowCount == 0)
            {
                MessageBox.Show("Không tồn tại dữ liệu nào trong CSDL!!!");
                txtNam.ResetText();
            }
        }

        private void txtTenHD_KeyPress(object sender, KeyPressEventArgs e)
        {
            string text = txtTenHD.Text.ToString();
            string thang = txtThang.Text.ToString();
            string nam = txtNam.Text.ToString();
            if (e.KeyChar == 13)
            {
                DataTable dt = new DataTable();
                dt.Clear();
                dt = dbThongTinHD.TimKiemTTHoatDong(text, thang, nam).Tables[0];

                dgvThongTinHD.DataSource = dt;

                if (dgvThongTinHD.RowCount == 0)
                {
                    MessageBox.Show("Không tồn tại tên này trong CSDL!!!");
                    txtTenHD.ResetText();
                }
            }
        }

        private void dgvThongTinHD_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }
        //}
    }
}
